import { cloudUrl } from "@/env.js"
//h5复制文本到剪切板
function copyContentH5({
	text,
	success,
	fail
}) {
	var copyDom = document.createElement('div');
	copyDom.innerText = text;
	copyDom.style.position = 'absolute';
	copyDom.style.top = '0px';
	copyDom.style.right = '-9999px';
	document.body.appendChild(copyDom);
	//创建选中范围
	var range = document.createRange();
	range.selectNode(copyDom);
	//移除剪切板中内容
	window.getSelection().removeAllRanges();
	//添加新的内容到剪切板
	window.getSelection().addRange(range);
	//复制
	try {
		document.execCommand('copy');
		if (success) {
			success();
		}
	} catch (err) {
		if (fail) {
			fail(err);
		}
	} finally {
		copyDom.parentNode.removeChild(copyDom);
	}
}

function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function (n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatTime2(time) {
	let date = new Date();
	date.setTime(time);
	return date.format("yyyy-MM-dd hh:mm:ss");
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}

function formatDistance(meters = 0) {
	if (meters < 1000) {
		return `${Math.floor(meters)}m`;
	} else {
		return `${Math.floor(meters / 1000)}km`;
	}
}

function optImagePath(richText) {
	if (!richText) {
		return ''
	}
	richText = richText.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, (match, capture) => {
		return match.replace(/src=[\'\"]?([^\'\"]*)[\'\"]?/i, (match2, capture2) => {
			if (capture2.startsWith(cloudUrl) || capture2.startsWith(
					'data:image/jpeg;base64')) {
				return `src="${capture2}"`
			}
			return `src="${cloudUrl}/imageLoader/?url=${encodeURIComponent(capture2)}"`
		})
	})
	richText = richText.replace(/url\(.+?\)/gi, (match, capture) => {
		return match.replace(
			/(http(s?):\/\/)?([A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\'])*)/gi,
			(match2, capture2) => {
				if (match2.startsWith(cloudUrl) || match2.startsWith(
						'data:image/jpeg;base64')) {
					return match2
				}
				return `${cloudUrl}/imageLoader/?url=${encodeURIComponent(match2)}`
			})
	})
}

var dateUtils = {
	UNITS: {
		'年': 31536000000,
		'月': 2592000000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function (milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function (dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function (number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	parse: function (str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	}
};



module.exports = {
	formatTime: formatTime,
	formatTime2: formatTime2,
	formatLocation: formatLocation,
	dateUtils: dateUtils,
	formatDistance,
	copyContentH5,
	optImagePath
}
